package es.decloud.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import es.decloud.dao.AlumnoDao;
import es.decloud.model.Alumno;
import es.decloud.service.AlumnoManager;

/**
 * Implementation of AlumnoManager interface.
 * 
 * @author <a href="mailto:dtercero@gmail.com">David Tercero</a>
 */
@Service("alumnoManager")
public class AlumnoManagerImpl extends GenericManagerImpl<Alumno, Long> implements AlumnoManager {
	AlumnoDao alumnoDao;

	@Autowired
	public AlumnoManagerImpl(AlumnoDao alumnoDao) {
		super(alumnoDao);
		this.alumnoDao = alumnoDao;
	}

	/**
	 * Obtiene el listado de las alumnos de un centro
	 */
	public List<Alumno> getAlumnosCentro(Long idCentro) {
		return alumnoDao.getAlumnosCentro(idCentro);
	}

	/**
	 * Obtiene el listado de alumnos de un centro que no estan asignados a
	 * ningun aula
	 */
	public List<Alumno> getAlumnosDisponibles(Long idCentro) {
		return alumnoDao.getAumnosDisponibles(idCentro);
	}

	/**
	 * Obtiene el alumno por su id en formato String
	 */
	@Override
	public Alumno getAlumno(final String alumnoId) {
		return alumnoDao.get(new Long(alumnoId));
	}

	/**
	 * Guarda los datos de un alumno en base de datos
	 */
	public Alumno saveAlumno(Alumno alumno) {
		return dao.save(alumno);
	}

	/**
	 * elimina un alumno de base de datos
	 */
	public void removeAlumno(Long idAlumno) {
		dao.remove(idAlumno);
	}
}